package com.neuedu.corejava.ch4;

import javax.print.DocFlavor.STRING;

public class Array1 {

	static String lessons[] = new String[10]  ;
	 
	public static void main(String[] args) {
		//数组：是一种数据结构，用于保存类型相同的一组数据；可以是基本数据类型 或 引用数据类型
		//设计一个数据结构，用于保存全班同学oracle课程的成绩
		//数组的定义:数组的定义使用；数据类型 中括号 和变量名进行定义
		//两种结构：数据类型[] 变量名； 和 数据类型 变量名[];
		
		//数组需要初始化后，才能用于存放数据
		//数组的初始化有多重方式：
		//1.)在定义的时候初始化,数组在初始化时需要指定数组的长度
		double[] scores = new double[50];
		scores[0] = 98;//保存数据到数组中
		scores[1] = 97;
		scores[2] = 94;
		scores[3] = 93;
		double score = scores[0];//从数组中获取数据
		
		//设计一个数据结构，用于保存全班同学的姓名
		String students[];
		//2.)在定义后初始化,数组在初始化时需要指定数组的长度
		students = new String[50];
		//3.)在定义的时候初始化,不指定数组长度而是直接填充数据到数组元素中
		double[] scores2 = new double[] {99,98,97,94,93};
		double[] scores3 = {99,98,97,94,93};
		//double[] scores4 = new double[10] {99,98,97,94,93};//错误，不能指定长度
		//double[10] scores5 = new double[] {99,98,97,94,93};//错误，不能等号的左边指定长度
		
		
		//数组元素的默认值：
		//1.整型数组元素的默认值是0
		//2.浮点型数组元素的默认值是0.0f或0.0
		//3.char类型数组元素的默认值是\u0000
		//4.布尔值类型的数组元素的默认值是false
		//5.其他引用数据类型的默认值都是null
		
		//new关键词
		//在java语句中，可以使用new关键词实例化对象，在实例化过程中会进行内存空间的申请，申请后由jvm进行内存分配
		//对象申请内存后，才能保存数据；
		//对象没有进行实例化的数组不能进行元素的访问，否则会抛出空指针异常
		lessons[0] = "java核心技术";
				
		//数组元素的访问
		//数组的遍历
		//for循环
		//数组是一个对象，包含有一个length属性，可以用于获取数组的长度
		//数组的下标是从0开始的
		for(int i=0;i<scores3.length;i++){
			System.out.print(scores3[i] +"\t");
		}
		
		//while循环
		int index = 0;
		while (index<scores3.length) {
			System.out.print(scores3[index++] +"\t");		
		}
		System.out.println();
		
		//for each:可以遍历数组或集合
		for (double d : scores3) {
			System.out.print(d+"\t");
		}
		
		//数组下标越界异常
		//double  d = scores3[scores3.length];错误：下标越界
		double  d = scores3[scores3.length-1];
		
	}

}
